package leetcode.leetbook.数组;

/**
 * @author https://gitee.com/W_Jun
 * @date 2022-03-31 22:18
 * @Description
 *  给你一个 升序排列 的数组 nums ，请你 原地 删除重复出现的元素，使每个元素 只出现一次 ，
 *  返回删除后数组的新长度。元素的 相对顺序 应该保持 一致 。
 *
 * 由于在某些语言中不能改变数组的长度，所以必须将结果放在数组nums的第一部分。
 * 更规范地说，如果在删除重复项之后有 k 个元素，那么nums的前 k 个元素应该保存最终结果。
 * 将最终结果插入nums 的前 k 个位置后返回 k 。
 *
 * 链接：https://leetcode-cn.com/leetbook/read/all-about-array/x9a60t/

 */
public class Q3_删除排序数组中的重复项 {
    public static void main(String[] args) {

    }

    public int removeDuplicates(int[] nums) {
        if (nums == null) return 0;
        //定义一个指针，作用是让索引为j及它之前的元素都不是重复的
        int j = 0;
        //遍历数组，当遇到与j索引处的元素不相同时，就让i索引处的元素覆盖到j+1处的
        for (int i = 0; i < nums.length; i++) {
            if (nums[i] != nums[j]) {
                nums[++j] = nums[i];
            }
            //不满足条件就什么也不做，让i自增
        }
        return j + 1;
    }
}
